#ifndef CLIENT_H
#define CLIENT_H

#include <QWidget>
#include <QTcpSocket>

#include "protocol.h"
#include "index.h"
#include "reshandler.h"

QT_BEGIN_NAMESPACE
namespace Ui { class Client; }
QT_END_NAMESPACE

class Client : public QWidget
{
    Q_OBJECT

public:
    ~Client();
    static Client& getInstance();   // 单例模式下返回实例
    void loadConfig()       ;       // 加载配置文件
    void sendMsg(PDU* pdu)  ;       // 发送消息
    PDU* readPDU()          ;
    void handleRes(PDU* pdu);

    QString getRootPath();

    QString m_strLoginName;
    ResHandler* rh;




public slots:
    void showConnect();     // 显示服务器连接情况
    void recvMsg()    ;     // 接收消息

//private slots:
//    void on_pushButton_clicked();


private slots:
    void on_regist_PB_clicked(); // 注册按钮槽函数

    void on_login_PB_clicked() ; // 登录按钮槽函数



private:
    // 单例模式
    Client(QWidget* parent = nullptr);
    Client(const Client& instance)   = delete;
    Client& operator=(const Client&) = delete;

    Ui::Client *ui        ; // 客服端ui界面
    QString    m_strIP    ; // 服务器IP
    qint16     m_usPORT   ; // 服务器端口号
    QTcpSocket m_tcpSocket; // 套接字（与服务器通信）
    QString  m_strRootPath;
};
#endif // CLIENT_H
